package com.ljfresh.customer.sercice.common;

import com.ljfresh.customer.page.PageObject;
import com.ljfresh.customer.page.PageResult;

import java.util.List;
import java.util.Map;

public interface CommonService<T, GK > {

    /**
     * 保存
     */
    abstract Long save(T param);

    /**
     * 更新
     */
    abstract Long update(T param);

    /**
     * 根据主键删除
     */
    abstract Long delete(GK pk);

    /**
     * 删除列表
     */
    abstract Long deleteAll(Long... ids);

    /**
     * 查询实体对象数量
     */
    abstract Long count();

    /**
     * 根据条件查询实体对象数量
     */
    abstract Long count(Map<String, Object> params);

    /**
     * 根据主键查询数据
     */
    abstract T find(GK pk);

    /**
     * 查询所有数据
     */
    abstract List<T> findAll();

    /**
     * 根据条件查询数据
     */
    abstract T find(String propertyName, Object propertyValue);

    /**
     * 根据属性名和属性值获取实体对象集合.
     */
    public List<T> findList(String propertyName, Object propertyValue);

    /**
     * 根据条件查询数据
     */
    abstract List<T> findList(Map<String, Object> params);

    /**
     * 分页查询
     */
    abstract PageResult<T> findByPage(PageObject po);
}
